1 POKE 53280,11:POKE 53281,12:PRINT "[147]"CHR$(142) 2 PRINT TAB(13)"[151]LYNX COMPILER" 3 PRINT TAB(13)"[163][163][163][163][163][163][163][163][163][163][163][163][163]" 4 PRINT TAB(9)"(C) 1989 WILL CORLEY" 5 DIM S$(5),T$(145),PN$(145),FT(145),FS(145),BL(145),LN(145) 6 DIM RT(145),RL(145),RS(145),LT(145),LS(145),ZT(145),ZS(145) 7 DIM BT(6,120),BS(6,120),TS(6),SS(6) 8 K$=CHR$(0) 9 SD$=" 8=SOURCE DRIVE":SD=VAL(SD$) 10 BA=193*256:TEM=49152 11 FOR X=0 TO 40:READ Y:POKE X+TEM,Y:NEXT X 12 HD$="":FOR X=1 TO 94:READ Y:HD$=HD$+CHR$(Y):NEXT X 13 INPUT "INSERT DISK";A$ 14 OPEN 15,SD,15,"I0":GOSUB 231 15 OPEN 2,SD,2,"#":GOSUB 231 16 T=18:S=1:N=0:W=N:BT=N 17 PRINT "[145][Y[146]][151]ES [N[146]][151]O [A[146]][151]UTO [G[146]][151]O [E[146]][151]XIT" 18 GOSUB 178:X=0 19 ZX=X*32:F$="":C=PEEK(BA+2+ZX) 20 IF N=143 AND S3=0 THEN 37 21 IF (C AND 128)<> 128 THEN 37 22 C=(C AND 15):IF C=0 THEN 37 23 GOSUB 181 24 DT=PEEK(BA+3+ZX):DS=PEEK(BA+4+ZX) 25 GOSUB 186 26 GOSUB 189 27 IF (H<>0 AND DT=18) THEN 37 28 POKE 212,1:PRINT F$:POKE 212,0 29 PRINT "[145]";TAB(17) T$ 30 IF W=1 THEN A$="Y":GOTO 32 31 POKE 198,0:WAIT 198,1:GET A$ 32 IF A$="G" THEN PRINT "[145][145]":GOTO 39 33 IF A$="A" THEN W=1:GOTO 30 34 IF A$="E" THEN CLOSE 2:CLOSE 15:END 35 IF A$<>"Y" THEN PRINT "[145][145]":GOTO 37 36 GOSUB 191 37 X=X+1:IF X<8 THEN 19 38 IF T<>0 THEN 18 39 PRINT " ":CLOSE 2:CLOSE 15 40 OPEN 15,SD,15,"UJ" 41 TI$="000000":WAIT 162,128 42 GET#15,A$:IF ST<>64 THEN 42 43 CLOSE 15 44 IF N=0 THEN END 45 GETA$:IF A$="E" THEN N=0:GOTO 44 46 BL(N+1)=0 47 OPEN 15,SD,15,"I0":GOSUB 231 48 PRINT#15,"M-R"CHR$(250)CHR$(2)CHR$(3) 49 GET#15,D$:L=ASC(D$+K$) 50 GET#15,D$ 51 GET#15,D$:H=ASC(D$+K$)*256+L 52 CLOSE 15 53 IF (N/6+5)13 THEN 56 59 IF LEN(LX$)=0 THEN 56 60 LX$=LX$+".LNX" 61 OPEN 15,SD,15:OPEN 3,SD,3,"0:"+LX$+","+"P,R" 62 INPUT#15,E,E$,ET,ES:CLOSE 3:CLOSE 15 63 IF E>19 THEN 66 64 PRINT "FILE EXISTS[151]" 65 POKE 198,0:WAIT 198,1:GOTO 56 66 OPEN 15,SD,15,"I0" 67 GOSUB 231 68 OPEN 2,SD,2,"#":GOSUB 231 69 FOR Z=1 TO N:PRINT "LINKING "PN$(Z) 70 BV=0 71 IF BL(Z)=0 THEN 88 72 IF T$(Z)="R" THEN 81 73 T=FT(Z):S=FS(Z) 74 GOSUB 225:BV=BV+1 75 GET#2,A$:T1=ASC(A$+K$) 76 GET#2,A$:S1=ASC(A$+K$) 77 IF T1<>0 THEN T=T1:S=S1:GOTO 74 78 IF BV<>BL(Z) THEN 228 79 LT(Z)=T:LS(Z)=S:LN(Z)=S1 80 GOTO 88 81 T=RT(Z):S=RS(Z) 82 GOSUB 225:BV=BV+1 83 GET#2,A$:T1=ASC(A$+K$) 84 GET#2,A$:S1=ASC(A$+K$) 85 IF T1<>0 THEN T=T1:S=S1:GOTO 82 86 ZT(Z)=T:ZS(Z)=S 87 GOTO 73 88 NEXT Z 89 FOR Z=1 TO N 90 IF BL(Z)=0 THEN 108 91 IF T$(Z)="R" THEN 104 92 T=LT(Z):S=LS(Z):GOSUB 225 93 IF Z=N THEN 108 94 Y=Z+1 95 IF BL(Y)<>0 THEN 98 96 Y=Y+1:IF YN THEN 108 99 IF T$(Y)="R" THEN 101 100 PRINT#2,CHR$(FT(Y));CHR$(FS(Y));:GOTO 102 101 PRINT#2,CHR$(RT(Y));CHR$(RS(Y)); 102 PRINT#15,"U2";2;0;T;S:GOSUB 231 103 GOTO 108 104 T=ZT(Z):S=ZS(Z):GOSUB 225 105 PRINT#2,CHR$(FT(Z));CHR$(FS(Z)); 106 PRINT#15,"U2";2;0;T;S:GOSUB 231 107 GOTO 92 108 NEXT Z:CLOSE 2 109 PRINT "CREATING LYNX HEADER" 110 PRINT#15,"I0":GOSUB 231:OPEN 3,SD,3,"0:"+LX$+","+"P,W":GOSUB 231 111 PRINT#3,HD$ 112 PRINT#3," *LYNX XVII WILL CORLEY":PRINT#3,N 113 FOR Z=1 TO N 114 PRINT#3,PN$(Z):PRINT#3,BL(Z):PRINT#3,T$(Z) 115 IF T$(Z)="R" THEN PRINT#3,RL(Z) 116 PRINT#3,LN(Z) 117 NEXT Z:CLOSE 3:GOSUB 231 118 PRINT "WRITING DIRECTORY":PRINT#15,"I0":GOSUB 231 119 IF LEN(LX$)<16 THEN LX$=LX$+CHR$(160):GOTO 119 120 OPEN 2,SD,2,"#":GOSUB 231:T=18:S=1:F1=0 121 PRINT#15,"U1";2;0;T;S:GOSUB 231 122 PRINT#15,"B-P";2;0:POKE 251,0:POKE 252,193:SYSTEM 123 T1=PEEK(BA):S1=PEEK(BA+1) 124 F3=0:X=0 125 ZX=X*32:F$="":GOSUB 186 126 IF F$=LX$ THEN 133 127 IF (F1=N) OR (PN$(F1+1)<>F$) THEN 129 128 PRINT#15,"B-P";2;X*32+2:PRINT#2,K$;:F3=1:F1=F1+1 129 X=X+1:IF X<8 THEN 125 130 IF F3=1 THEN PRINT#15,"U2";2;0;T;S:GOSUB 231 131 IF T1=0 THEN 139 132 T=T1:S=S1:GOTO 121 133 HB=PEEK(BA+31+ZX)*256+PEEK(BA+30+ZX):BT=HB+BT 134 FT(0)=PEEK(BA+3+ZX):FS(0)=PEEK(BA+4+ZX) 135 PRINT#15,"B-P";2;X*32+30 136 H=INT(BT/256):L=BT-(H*256) 137 PRINT#2,CHR$(L);CHR$(H); 138 F3=1:GOTO 129 139 T=FT(0):S=FS(0) 140 PRINT#15,"U1";2;0;T;S:GOSUB 231 141 LZ=LEN(HD$)+3 142 PRINT#15,"B-P";2;LZ 143 PRINT#2,STR$(HB); 144 PRINT#15,"U2";2;0;T;S 145 GOTO 147 146 PRINT#15,"U1";2;0;T;S:GOSUB 231 147 PRINT#15,"B-P";2;0 148 GET#2,D$:T1=ASC(D$+K$) 149 GET#2,D$:S1=ASC(D$+K$) 150 IF T1<>0 THEN T=T1:S=S1:GOTO 146 151 Y=1 152 IF BL(Y)<>0 THEN 155 153 Y=Y+1:IF YCHR$(13) THEN 167 164 POKE 204,1:IF LEN(I$)=CM THEN 166 165 A$=" "+A$ 166 PRINT A$:RETURN 167 POKE 204,1:IF LEN(I$)=CM THEN 169 168 A=(PEEK(210)*256+PEEK(209)+PEEK(211)):POKE A,PEEK(A) AND 127 169 IF A$<>CHR$(20) THEN 173 170 IF LEN(I$)=0 THEN PRINT " [157]";:GOTO 161 171 I$=LEFT$(I$,LEN(I$)-1) 172 PRINT "[157] [157]";:C=0:GOTO 161 173 IF LEN(I$)=CM THEN 161 174 IF ASC(A$)=160 THEN PRINT " [146]";:GOTO 176 175 POKE 212,1:PRINT A$;:POKE 212,0 176 I$=I$+A$:IF LEN(I$)=CM THEN C=1 177 GOTO 161 178 PRINT#15,"U1";2;0;T;S:GOSUB 231:PRINT#15,"B-P";2;0:GOSUB 231 179 POKE 251,0:POKE 252,193:SYSTEM:T=PEEK(BA):S=PEEK(BA+1):RETURN 180 IF C=0 THEN T$="DEL" 181 IF C=1 THEN T$="SEQ" 182 IF C=2 THEN T$="PRG" 183 IF C=3 THEN T$="USR" 184 IF C=4 THEN T$="REL" 185 RETURN 186 FOR Y=BA+5+ZX TO BA+20+ZX 187 D$=CHR$(PEEK(Y)) 188 F$=F$+D$:NEXT Y:RETURN 189 H=PEEK(BA+31+ZX)*256+PEEK(BA+30+ZX) 190 RT=PEEK(BA+21+ZX):RS=PEEK(BA+22+ZX):RL=PEEK(BA+23+ZX):RETURN 191 N=N+1 192 PN$(N)=F$ 193 FT(N)=DT 194 FS(N)=DS 195 BL(N)=H 196 BT=BT+H 197 T$(N)=LEFT$(T$,1) 198 RT(N)=RT 199 RS(N)=RS 200 RL(N)=RL 201 RETURN 202 D=16-LEN(PN$(Z)) 203 IF D=0 THEN 207 204 FOR Y=1 TO D 205 A$=A$+CHR$(160) 206 NEXT Y 207 B$=LEFT$(C$,3) 208 RETURN 209 A$=A$+B$+C$ 210 H=INT(BL(Z)/256) 211 L=BL(Z)-(H*256) 212 A$=A$+CHR$(L)+CHR$(H) 213 IF X<>7 THEN A$=A$+K$+K$ 214 Z=Z+1:RETURN 215 IF LEN(A$)<254 THEN A$=A$+K$:GOTO 215 216 S=ND 217 ND=ND+3 218 IF ND>18 THEN ND=ND-17 219 PRINT#15,"B-P";2;0 220 IF Z>N THEN PRINT#2,K$;CHR$(255);:GOTO 222 221 PRINT#2,CHR$(18);CHR$(ND); 222 PRINT#2,A$; 223 PRINT#15,"U2";2;0;18;S:GOSUB 231 224 RETURN 225 PRINT#15,"U1";2;0;T;S:GOSUB 231 226 PRINT#15,"B-P";2;0:GOSUB 231 227 RETURN 228 PRINT "FILE LENGTH ERROR" 229 CLOSE 2:CLOSE 15 230 POKE 198,0:WAIT 198,1:END 231 INPUT#15,E,E$,ET,ES:IF E>19 THEN CLOSE 2:CLOSE 3:GOTO 233 232 RETURN 233 PRINT E;E$;ET;ES 234 END 235 IF BL(Z)<122 THEN SS=1:RETURN 236 IF BL(Z)<243 THEN SS=2:RETURN 237 IF BL(Z)<364 THEN SS=3:RETURN 238 IF BL(Z)<485 THEN SS=4:RETURN 239 IF BL(Z)<606 THEN SS=5:RETURN 240 SS=6:RETURN 241 A$="":FOR X=1 TO 28:GET#2,B$:A$=A$+B$:NEXT:GET#2,B$ 242 B$="*LYNX":X=1:RZ=0 243 IF MID$(A$,X,5)=B$ THEN RZ=1:RETURN 244 IF MID$(A$,X,4)="LYNX" THEN RETURN 245 X=X+1:IF X<22 THEN 243 246 CLOSE 2:CLOSE 15:S3=-1 247 PRINT "NOT A LYNXED FILE" 248 POKE 198,0:WAIT 198,1:END 249 OPEN 15,SD,15,"I0":GOSUB 231 250 OPEN 2,SD,2,"0:"+PN$(1)+","+T$(1)+",R":GOSUB 231 251 GET#2,A$:A=ASC(A$+K$) 252 GET#2,A$:B=ASC(A$+K$) 253 ZR=0:IF (A=1 AND B=8) THEN ZR=1 254 CLOSE 2:CLOSE 15:RETURN 255 DATA 162,2,32,198,255,160,0,32,228,255 256 DATA 145,251,200,208,248,32,204,255,96,162 257 DATA 2,32,198,255,162,25,160,0,32,228 258 DATA 255,145,251,200,202,208,247,32,204,255 259 DATA 96 260 DATA 1,8,91,8,10,0,151,53,51,50 261 DATA 56,48,44,48,58,151,53,51,50,56 262 DATA 49,44,48,58,151,54,52,54,44,194 263 DATA 40,49,54,50,41,58,153,34,147,17 264 DATA 17,17,17,17,17,17,17,34,58,153 265 DATA 34,32,32,32,32,32,85,83,69,32 266 DATA 76,89,78,88,32,84,79,32,68,73 267 DATA 83,83,79,76,86,69,32,84,72,73 268 DATA 83,32,70,73,76,69,34,58,137,49 269 DATA 48,0,0,0